package com.dys.testcomparable09;

import java.util.Comparator;

/**
 * @className: com.dys.testcomparable09.CompareToTest
 * @description: 比较器
 * @author: pine cone
 * @version: v1.0.0
 * @createTime: 2024/08/08 下午8:09
 */
public class CompareToTest {
    /**
     * 这是一个main()方法,是应用程序的入口
     *
     * @param args 方法的形参列表,是一个字符串数组,包含了从命令行传递给程序的参数
     */
    public static void main(String[] args) {
        new CompareToTest().testCompareTo();
    }

    /**
     * 比较的思路：将比较的数据做差，然后返回一个int类型的数据，将这个int类型的数值  按照 =0  >0  <0
     */
    public void testCompareTo() {
        // 比较int类型
        int n1 = 10;
        int n2 = 20;
        System.out.println(n1 - n2);
        // 比较String类型，String类实现了Comparable接口，这个接口中有一个抽象方法compareTo，String类中重写这个方法即可
        String s1 = "A";
        String s2 = "B";
        System.out.println(s1.compareTo(s2));
        // 比较double类型数据：
        double d1 = 9.9;
        double d2 = 9.8;
        // System.out.println((int)(d1-d2));
        System.out.println(((Double) d1).compareTo(((Double) d2)));
        // 比较自定义的数据类型：内部比较器
        System.out.println("============================");
        Student stu1 = new Student("张淑娜", 19, 165.5);
        Student stu2 = new Student("李四", 20, 165.5);
        System.out.println(stu1.compareTo(stu2));
        // 比较自定义的数据类型：外部比较器
        Person p1 = new Person("王大虎", 22, 177.5);
        Person p2 = new Person("王二虎", 21, 167.5);
        // 获取外部比较器
        System.out.println("============================");
        Comparator<Person> c1 = new Comparisons1();
        System.out.println(c1.compare(p1, p2));
        System.out.println("=============身高进行比较===============");
        Comparator<Person> c2 = new Comparisons2();
        System.out.println(c2.compare(p1, p2));
        System.out.println("=============年龄相同,比较身高===============");
        Comparator<Person> c3 = new Comparisons3();
        System.out.println(c3.compare(p1, p2));
    }
}
